# -*- coding:utf-8 -*-

"""
订单记录 DO
基于 C# OrderItem 结构
"""

from sqlalchemy import Column, Integer, String, DECIMAL, DateTime, Text, Boolean, BigInteger
from sqlalchemy.sql import func, text
from config.database import Base
import datetime


class OrderRecord(Base):
    """
    订单记录表 - 用于记录自动下单和手动下单的订单信息
    """
    __tablename__ = 'order_record'
    __table_args__ = {'comment': '订单记录表', 'extend_existing': True}
    
    # 主键（使用BigInteger，不继承BaseMixin的Integer id）
    id = Column(BigInteger, primary_key=True, autoincrement=True, comment='主键')
    
    # BaseMixin 字段（手动添加，因为id类型不同不能继承BaseMixin）
    create_time = Column(DateTime, nullable=False, default=datetime.datetime.now, server_default=func.now(), comment='创建时间')
    update_time = Column(DateTime, nullable=False, default=datetime.datetime.now, onupdate=datetime.datetime.now, index=True, comment='更新时间')
    del_flag = Column(String(1), nullable=False, default='0', server_default=text("'0'"), comment='删除标志（0代表存在 2代表删除）')
    create_by = Column(Integer, nullable=False, comment='创建者')
    dept_id = Column(Integer, nullable=False, comment='部门id')
    
    # 商品信息
    item_id = Column(String(100), nullable=False, comment='商品ID')
    title = Column(Text, comment='商品标题')  # ✅ 改为 Text 类型，支持任意长度
    price = Column(DECIMAL(10, 2), comment='商品价格')
    pic_url = Column(String(500), comment='商品图片URL')
    pic_width = Column(Integer, comment='图片宽度')
    pic_height = Column(Integer, comment='图片高度')
    
    # 卖家信息
    tag_name = Column(String(200), comment='标签名')
    seller_id = Column(String(100), comment='卖家ID')
    user_nick_name = Column(String(200), comment='卖家昵称')
    user_avatar_url = Column(String(500), comment='卖家头像')
    area = Column(String(100), comment='卖家地区')
    hide_user_info = Column(Boolean, default=False, comment='是否隐藏用户信息')
    
    # 搜索信息
    keyword = Column(String(200), comment='搜索关键词')
    page = Column(Integer, default=1, comment='搜索页数')
    position = Column(Integer, comment='搜索结果位置')
    publish_time = Column(DateTime, comment='商品发布时间')
    search_time = Column(DateTime, comment='搜索时间')
    
    # 商品属性
    is_alimama_ad = Column(Boolean, default=False, comment='是否阿里妈妈广告')
    is_auction = Column(Boolean, default=False, comment='是否拍卖商品')
    
    # 下单信息
    client_id = Column(String(100), comment='下单客户端ID')
    account_user_id = Column(String(100), comment='账号用户ID')
    user_name = Column(String(100), comment='下单用户名')
    
    # 订单信息
    biz_order_id = Column(String(100), comment='业务订单ID')
    biz_order_id_str = Column(String(100), comment='业务订单ID字符串')
    pay_order_id = Column(String(100), comment='支付订单ID')
    pay_url = Column(Text, comment='支付链接')
    service_order = Column(String(100), comment='服务订单号')
    use_pay_url = Column(Text, comment='使用的支付链接')
    
    # 状态信息
    order_status = Column(String(50), default='pending', comment='订单状态（pending-待下单，ordered-已下单待支付，paid-已支付，cancelled-已取消，failed-失败）')
    error = Column(Text, comment='错误信息')
    is_auto_order = Column(Boolean, default=True, comment='是否自动下单（0-手动，1-自动）')
    
    # 时间戳
    pay_time = Column(DateTime, comment='支付时间')
    # 注意：create_time 和 update_time 在上面已定义（BaseMixin字段）
